
        <html>
			<head>
			     <title>不修改加密文件名的勒索软件TeslaCrypt 4.0 - SwordLea</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/papers/14671">http://drops.wooyun.org/papers/14671</a></h1>
				
      <p>
        <h1>0x00 概述</h1>

<hr />

<p>安天安全研究与应急处理中心（Antiy CERT）近期发现勒索软件TeslaCrypt的最新变种TeslaCrypt 4.0，它具有多种特性，例如：加密文件后不修改原文件名、对抗安全工具、具有PDB路径、利用CMD自启动、使用非常规的函数调用、同一域名可以下载多个勒索软件等。</p>

<p>勒索软件TeslaCrypt在2015年2月份左右被发现<sup>【1】</sup>，它是在Cryptolocker的基础上修改而成。在其第一个版本中，TeslaCrypt声称使用非对称RSA-2048加密算法，但实际上使用的是对称的AES加密算法，由此Cisco（思科）发布了一款解密工具，在找到可恢复主密钥的key.dat文件时，可以解密被TeslaCrypt勒索加密的文件<sup>【2】</sup>；但在之后的多个版本中，勒索软件TeslaCrypt开始使用非对称的RSA加密算法，被加密的文件在无密钥的情况下已经无法成功解密了，安天CERT发现，TeslaCrypt 4.0在2016年3月份开始出现，使用的是RSA-4096加密算法。</p>

<!--more-->

<p>勒索软件系列事件的出现，具有多方面原因，其中重要的一点是匿名网络和匿名支付的高度成熟。2016年春节过后，勒索软件Locky开始爆发，全球多家安全厂商发布了相应的报告，安天CERT也在2016年2月19日发布了《首例具有中文提示的比特币勒索软件“LOCKY”》<sup>【3】</sup>；2016年3月底，G-Data和趋势先后发布了修改MBR、加密整个硬盘的勒索软件Petya的报告；2016年4月初，安天CERT开始跟踪勒索软件TeslaCrypt 4.0。</p>

<h1>0x01 传播方式</h1>

<hr />

<p>勒索软件TeslaCrypt 4.0利用网站挂马和电子邮件进行传播，在国内网站挂马发现的较少，通常利用浏览器漏洞（Chrome、Firefox、Internet Explorer）、Flash漏洞和Adobe Reader漏洞进行传播；而利用电子邮件传播的数量较多，安天CERT发现的多起勒索软件事件也都是通过电子邮件传播的。</p>

<p><img src="http://static.wooyun.org//drops/20160408/2016040804572441139115.jpg" alt="p1" /> 图 1 利用电子邮件传播勒索软件</p>

<p>在分析TeslaCrypt的下载地址时，安天CERT研究人员发现，相同域名下存放多个TeslaCrypt 4.0程序，且文件HASH各不相同。例如：域名http://&#42;**|||pasqq.com，可以下载TeslaCrypt 4.0的地址如下：</p>

<ul>
<li><code>http://***pasqq.com/23.exe</code></li>
<li><code>http://***pasqq.com/24.exe</code></li>
<li><code>http://***pasqq.com/25.exe</code></li>
<li><code>http://***pasqq.com/42.exe</code></li>
<li><code>http://***pasqq.com/45.exe</code></li>
<li><code>http://***pasqq.com/48.exe</code></li>
<li><code>http://***pasqq.com/69.exe</code></li>
<li><code>http://***pasqq.com/70.exe</code></li>
<li><code>http://***pasqq.com/80.exe</code></li>
<li><code>http://***pasqq.com/85.exe</code></li>
<li><code>http://***pasqq.com/87.exe</code></li>
<li><code>http://***pasqq.com/93.exe</code></li>
</ul>

<p>另外，其他域名中勒索软件的下载地址同上，如：23.exe、24.exe、25.exe … 93.exe。至2016年4月7日14时，安天CERT共发现具有下载勒索软件TeslaCrypt 4.0的域名共50多个，部分域名已经失效。</p>

<p>部分下载勒索软件TeslaCrypt 4.0的域名：</p>

<ul>
<li><code>***pasqq.com</code></li>
<li><code>***uereqq.com</code></li>
<li><code>***ghsqq.com</code></li>
<li><code>***rulescc.asia</code></li>
<li><code>***rulesqq.com</code></li>
</ul>

<h1>0x02 样本分析</h1>

<hr />

<p>安天CERT共发现近300个勒索软件TeslaCrypt 4.0。研究人员在其中选择了时间较新的样本进行分析。</p>

<h3>2.1 样本标签</h3>

<table>
  <tr>
    <td>
      病毒名称
    </td>
    
    <td>
      Trojan[Ransom]/Win32.Teslacrypt
    </td>
  </tr>
  
  <tr>
    <td>
      原始文件名
    </td>
    
    <td>
      80.exe
    </td>
  </tr>
  
  <tr>
    <td>
      MD5
    </td>
    
    <td>
      30CB7DB1371C01F930309CDB30FF429B
    </td>
  </tr>
  
  <tr>
    <td>
      处理器架构
    </td>
    
    <td>
      X86-32
    </td>
  </tr>
  
  <tr>
    <td>
      文件大小
    </td>
    
    <td>
      396 KB (405,504 字节)
    </td>
  </tr>
  
  <tr>
    <td>
      文件格式
    </td>
    
    <td>
      BinExecute/Microsoft.EXE[:X86]
    </td>
  </tr>
  
  <tr>
    <td>
      时间戳
    </td>
    
    <td>
      5704939E -->2016-04-06 12:42:06
    </td>
  </tr>
  
  <tr>
    <td>
      数字签名
    </td>
    
    <td>
      NO
    </td>
  </tr>
  
  <tr>
    <td>
      加壳类型
    </td>
    
    <td>
      未知
    </td>
  </tr>
  
  <tr>
    <td>
      编译语言
    </td>
    
    <td>
      Microsoft Visual C++
    </td>
  </tr>
  
  <tr>
    <td>
      VT首次上传时间
    </td>
    
    <td>
      2016-04-06 04:07:00 UTC
    </td>
  </tr>
  
  <tr>
    <td>
      VT检测结果
    </td>
    
    <td>
      28/57
    </td>
  </tr>
</table>

<h3>2.2 使用RSA4096加密算法加密文件，但不修改原文件名</h3>

<p>该样本运行后复制自身至%Application Data%文件夹中，重命名为wlrmdr.exe，设置自身属性为隐藏，然后使用CreateProcessW为其创建进程。</p>

<p><img src="http://static.wooyun.org//drops/20160408/2016040804572658553212.jpg" alt="p2" /> 图 2 创建wlrmdr.exe进程</p>

<p>样本在新创建的进程中使用CreateThread开启线程，对全盘文件进行加密。首先样本使用GetLogicalDriveStringsW获取所有逻辑驱动器，成功后使用FindFirstFileW与FindNextFileW遍历全盘所有文件，进行加密。</p>

<p><img src="http://static.wooyun.org//drops/20160408/201604080457288157633.jpg" alt="p3" /> 图 3 遍历磁盘文件</p>

<p>加密函数地址为0x0040190A。</p>

<p><img src="http://static.wooyun.org//drops/20160408/201604080457299159843.jpg" alt="p4" /> 图 4 调用加密函数对遍历到的文件加密</p>

<p>利用RSA4096算法加密后，调用WriteFile将加密后的数据由内存写入文件，没有对文件名做修改。</p>

<p><img src="http://static.wooyun.org//drops/20160408/201604080457312293554.jpg" alt="p5" /> 图 5 将加密后的数据写入文件</p>

<p>加密前后的文件对比：</p>

<p><img src="http://static.wooyun.org//drops/20160408/201604080457338411465.jpg" alt="p6" /> 图 6加密前后的文件对比</p>

<h3>2.3 对抗安全工具</h3>

<p>样本会查找系统中是否存在包含字符串的进程并将其隐藏，使用用户无法“看到”这些工具：</p>

<table>
  <tr>
    <td>
      “taskmg”
    </td>
    
    <td>
      任务管理器
    </td>
  </tr>
  
  <tr>
    <td>
      “regedi”
    </td>
    
    <td>
      注册表管理器
    </td>
  </tr>
  
  <tr>
    <td>
      “procex”
    </td>
    
    <td>
      进程分析工具
    </td>
  </tr>
  
  <tr>
    <td>
      “msconfi”
    </td>
    
    <td>
      系统配置
    </td>
  </tr>
  
  <tr>
    <td>
      “cmd”
    </td>
    
    <td>
      命令提示符
    </td>
  </tr>
</table>

<p><img src="http://static.wooyun.org//drops/20160408/201604080457345289275.jpg" alt="p7" /> 图 7 隐藏cmd界面</p>

<h3>2.4 具有PDB信息</h3>

<p>样本具有PDB信息，其文件名为“<code>wet problem i yuoblem i_x.pdb</code>”</p>

<p><img src="http://static.wooyun.org//drops/20160408/201604080457356953783.jpg" alt="p8" /> 图 8 样本的调试信息中包含PDB信息</p>

<h3>2.5利用CMD自启动</h3>

<p>样本调用RegCreateKeyExW，将使用CMD启动自身的代码写入至注册表中，使其随系统开机启动。</p>

<p><img src="http://static.wooyun.org//drops/20160408/201604080457372782093.jpg" alt="p9" /> 图 9 利用CMD达到随系统开机启动的目的</p>

<h3>2.6使用非常规的函数调用和跳转</h3>

<p>样本使用了很多非常规的函数调用和跳转，用来阻止安全人员分析该病毒。</p>

<p><img src="http://static.wooyun.org//drops/20160408/2016040804573911922103.jpg" alt="p10" /> 图 10　非常规的函数调用</p>

<p><img src="http://static.wooyun.org//drops/20160408/2016040804574037165116.jpg" alt="p11" /> 图 11　非常规的跳转</p>

<h3>2.7 TeslaCrypt 4.0加密的文件格式</h3>

<p><img src="http://static.wooyun.org//drops/20160408/2016040804574274626124.jpg" alt="p12" /> 图 12 TeslaCrypt 4.0加密的文件格式</p>

<h1>0x03 总结</h1>

<hr />

<p>勒索软件对企业和个人用户都具有极大的威胁，被加密后的文件无法恢复，将给用户造成巨大的损失。解决勒索软件的威胁问题除安装安全产品、防护产品、备份产品外，更需要用户在接收邮件时谨慎小心，慎重打开邮件附件或点击邮件内的链接，尤其是陌生人邮件。</p>

<p>安天智甲终端防护系统（IEP）可以在用户误点击运行勒索软件时阻止其对用户文件进行加密。</p>

<h1>0x04 附录一：参考资料</h1>

<hr />

<ul>
<li>【1】<a href="http://www.antiy.com/response/ransomware.html">安天发布：揭开勒索软件的真面目</a></li>
<li>【2】思科发布：针对勒索软件TeslaCrypt的解密工具：<br />
<a href="http://www.freebuf.com/sectool/66060.html">http://www.freebuf.com/sectool/66060.html</a><br />
<a href="http://blogs.cisco.com/security/talos/teslacrypt">http://blogs.cisco.com/security/talos/teslacrypt</a></li>
<li>【3】<a href="http://www.antiy.com/response/locky/locky.html">首例具有中文提示的比特币勒索软件“LOCKY”</a></li>
</ul>

<h1>0x05 附录二：安天CERT发现的50多个传播勒索软件的域名</h1>

<hr />

<table>
  <tr>
    <td>
      marvellrulescc.asia
    </td>
    
    <td>
      witchbehereqq.com
    </td>
    
    <td>
      ohelloguymyff.com
    </td>
  </tr>
  
  <tr>
    <td>
      arendroukysdqq.com
    </td>
    
    <td>
      isityouereqq.com
    </td>
    
    <td>
      joecockerhereff.com
    </td>
  </tr>
  
  <tr>
    <td>
      blablaworldqq.com
    </td>
    
    <td>
      jeansowghsqq.com
    </td>
    
    <td>
      howisittomorrowff.com
    </td>
  </tr>
  
  <tr>
    <td>
      fromjamaicaqq.com
    </td>
    
    <td>
      marvellrulesqq.com
    </td>
    
    <td>
      giveitalltheresqq.com
    </td>
  </tr>
  
  <tr>
    <td>
      goonwithmazerqq.com
    </td>
    
    <td>
      greetingseuropasqq.com
    </td>
    
    <td>
      giveitallhereqq.com
    </td>
  </tr>
  
  <tr>
    <td>
      gutentagmeinliebeqq.com
    </td>
    
    <td>
      grandmahereqq.com
    </td>
    
    <td>
      ohelloguyzzqq.com
    </td>
  </tr>
  
  <tr>
    <td>
      hellomississmithqq.com
    </td>
    
    <td>
      mafiawantsyouqq.com
    </td>
    
    <td>
      jeansowghtqq.com
    </td>
  </tr>
  
  <tr>
    <td>
      hellomisterbiznesqq.com
    </td>
    
    <td>
      spannflow.com
    </td>
    
    <td>
      grandaareyoucc.asia
    </td>
  </tr>
  
  <tr>
    <td>
      hellomydearqq.com
    </td>
    
    <td>
      ohelloguyqq.com
    </td>
    
    <td>
      imgointoeatnowcc.com
    </td>
  </tr>
  
  <tr>
    <td>
      helloyoungmanqq.com
    </td>
    
    <td>
      bonjovijonqq.com
    </td>
    
    <td>
      washitallawayff.com
    </td>
  </tr>
  
  <tr>
    <td>
      howareyouqq.com
    </td>
    
    <td>
      joecockerhereqq.com
    </td>
    
    <td>
      greetingsjamajcaff.com
    </td>
  </tr>
  
  <tr>
    <td>
      invoiceholderqq.com
    </td>
    
    <td>
      itsyourtimeqq.su
    </td>
    
    <td>
      hpalsowantsff.com
    </td>
  </tr>
  
  <tr>
    <td>
      itisverygoodqq.com
    </td>
    
    <td>
      blizzbauta.com
    </td>
    
    <td>
      ohellowruff.com
    </td>
  </tr>
  
  <tr>
    <td>
      lenovomaybenotqq.com
    </td>
    
    <td>
      yesitisqqq.com
    </td>
    
    <td>
      ohelloweuqq.com
    </td>
  </tr>
  
  <tr>
    <td>
      lenovowantsyouqq.com
    </td>
    
    <td>
      thisisitsqq.com
    </td>
    
    <td>
      ujajajgogoff.com
    </td>
  </tr>
  
  <tr>
    <td>
      mafianeedsyouqq.com
    </td>
    
    <td>
      soclosebutyetqq.com
    </td>
    
    <td>
      ohiyoungbuyff.com
    </td>
  </tr>
  
  <tr>
    <td>
      mommycantakeff.com
    </td>
    
    <td>
      isthereanybodyqq.com
    </td>
    
    <td>
      helloyungmenqq.com
    </td>
  </tr>
  
  <tr>
    <td>
      thisisyourchangeqq.com
    </td>
    
    <td>
      ohelloguyff.com
    </td>
    
    <td>
    </td>
  </tr>
</table>

<h1>0x06 附录三：安天CERT发现的C&amp;C地址</h1>

<hr />

<ul>
<li>addagapublicschool.com/binfile.php</li>
<li>kel52.com/wp-content/plugins/ajax-admin/binstr.php</li>
<li>closerdaybyday.info/wp-content/plugins/google-analytics-for-wordpress/vendor/composer/installers/tests/Composer/Installers/Test/binfile.php</li>
<li>coldheartedny.com/wp-content/plugins/wordpress-mobile-pack/libs/htmlpurifier-4.6.0/library/HTMLPurifier/DefinitionCache/Serializer/URI/binfile.php</li>
<li>thejonesact.com/wp-content/themes/sketch/binfile.php</li>
<li>theoneflooring.com/wp-content/themes/sketch/binfile.php</li>
<li>mahmutersan.com.tr/wp-content/plugins/contact-form-maker/images/02/03/stringfile.php</li>
<li>myredhour.com/blog//wp-content/themes/berlinproof/binstr.php</li>
<li>controlfreaknetworks.com/dev/wp-content/uploads/2015/07/binstr.php</li>
<li>sappmtraining.com/wp-includes/theme-compat/wcspng.php</li>
<li>controlfreaknetworks.com/dev/wp-content/uploads/2015/07/wcspng.php</li>
<li>vtechshop.net/wcspng.php</li>
<li>sappmtraining.com/wp-includes/theme-compat/wcspng.php</li>
<li>shirongfeng.cn/images/lurd/wcspng.php</li>
<li>198.1.95.93/~deveconomytravel/cache/binstr.php</li>
<li>helpdesk.keldon.info/plugins/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/binfile.php</li>
<li>hotcasinogames.org/binfile.php</li>
<li>goldberg-share.com/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/binfile.php</li>
<li>opravnatramvaji.cz/modules/mod_search/wstr.php</li>
<li>studiosundaytv.com/wp-content/themes/sketch/binfile.php</li>
<li>theoneflooring.com/wp-content/themes/sketch/binfile.php</li>
<li>hotcasinogames.org/binfile.php</li>
<li>pcgfund.com/binfile.php</li>
<li>kknk-shop.dev.onnetdigital.com/stringfile.php</li>
<li>forms.net.in/cgi-bin/stringfile.php</li>
<li>casasembargada.com/wp-content/plugins/formcraft/php/swift/lib/classes/Swift/Mime/HeaderEncoder/stringfile.php</li>
<li>csskol.org/wp-content/plugins/js_composer/assets/lib/font-awesome/src/assets/font-awesome/fonts/stringfile.php</li>
<li>grosirkecantikan.com/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/binarystings.php</li>
<li>naturstein-schubert.de/modules/mod_cmscore/stringfile.php</li>
<li>vtc360.com/wp-content/themes/vtc360&#95;maxf3d/ReduxFramework/ReduxCore/inc/extensions/wbc&#95;importer/demo-data/Demo2/binarystings.php</li>
<li>starsoftheworld.org/cgi-bin/binarystings.php</li>
<li>holishit.in/wp-content/plugins/wpclef/assets/src/sass/neat/grid/binarystings.php</li>
<li>minteee.com/images/binstr.phpnewculturemediablog.com/wp-includes/fonts/wstr.php</li>
<li>drcordoba.com/components/bstr.php</li>
</ul>

<h1>0x07 附录四：关于安天</h1>

<hr />

<p>安天从反病毒引擎研发团队起步，目前已发展成为拥有四个研发中心、监控预警能力覆盖全国、产品与服务辐射多个国家的先进安全产品供应商。安天历经十五年持续积累，形成了海量安全威胁知识库，并综合应用网络检测、主机防御、未知威胁鉴定、大数据分析、安全可视化等方面经验，推出了应对持续、高级威胁（APT）的先进产品和解决方案。安天技术实力得到行业管理机构、客户和伙伴的认可，安天已连续四届蝉联国家级安全应急支撑单位资质，亦是CNNVD六家一级支撑单位之一。安天移动检测引擎是获得全球首个AV-TEST（2013）年度奖项的中国产品，全球超过十家以上的著名安全厂商都选择安天作为检测能力合作伙伴。</p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          